﻿namespace GameLib.Games
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    /// <summary> Interface for game component collection. </summary>
    /// <remarks> Ben McClure, 12/2/2010. </remarks>
    public interface IGameComponentCollection : IGameComponentCollection<object>
    {
    }

    /// <summary> Interface for a generic game component collection. </summary>
    /// <typeparam name="T">The type of game component to store in the collection.</typeparam>
    /// <remarks> Ben McClure, 12/2/2010. </remarks>
    public interface IGameComponentCollection<T> : IList<T>, ICloneable
    {
        #region Events

        /// <summary> Thrown whenever the <see cref="IGameComponentCollection"/> has been exported from. </summary>
        event EventHandler<EventArgs> ListExported;

        /// <summary> Thrown whenever the <see cref="IGameComponentCollection"/> has been imported into. </summary>
        event EventHandler<EventArgs> ListImported;

        #endregion
    }
}
